﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace cz.muni.fi.pb138.IO
{
	/// <summary>
	/// An interface providing all the necesarry methods to call uniformly import and export operations for various file formats
	/// </summary>
    interface IIOFactory
    {
		/// <summary>
		/// the datasource property holding the corresponding datasource to call storing and reading operations upon
		/// </summary>
        IIODataSource DataSource { get; set; }

		/// <summary>
		/// operation to be called for importing media from a DataSource
		/// </summary>
		/// <param name="fileName">a file name to be presented to the <c>DataSource</c>to perform the import method upon</param>
		/// <returns>a collection of all read <c>Media</c> from the given location</returns>
        IList<Media> importData(string fileName);
		/// <summary>
		/// exports all the given media into the file passed in <c>fileName</c> argument.
		/// </summary>
		/// <param name="list">a collection of all <c>Media</c> classes that are to be exported into the file</param>
		/// <param name="fileName">a fileName path to store the Media into</param>
        void exportData(IList<Media> list, string fileName);
		/// <summary>
		/// a FileType string
		/// </summary>
        string FileType { get; }
    }
}
